웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > php

[PHP] 한글 문자열 가져오기 자르기, mb_substr()

Last Modified : 2017-12-25 / Created : 2015-02-02
36,529
View Count
PHP에서 문자열의 일부만 가져와야(잘라야) 할 경우 일반적으로 substr() 함수를 사용하죠. 그런데 만약 한글이라면 이 함수를 사용할 경우 뒷부분에 의도치 않은 문자가 나타날 수 있습니다.




# php 문자열 자르는 방법

먼저 위와같이 이상한 문자가 나타나는 이유는 한글 인코딩의 byte 단위가 영문과 다르기 때문입니다. 이때는 mb_substr() 함수를 사용해 해결할 수 있습니다.

mb_substr(문자열, 시작위치, 나타낼 길이, 인코딩방식);


인코딩 인자에는 아래와 같은 문자 인코딩이 사용될 수 있습니다.

  • i. UTF-8
  • ii. EUC-KR

그럼 아래에서 예제를 사용하여 자세히 알아봅니다.


# mb_substr()함수의 예제
만약 $sitename가 '랭킹이즈' 이라고 할 경우 아래와 같이 사용할 수 있습니다. 두 개의 함수를 모두 사용하여 결과가 어떻게 다른지 알아봅니다.
<?php
  $sitename = '웹이즈프리';
  echo mb_substr($sitename, 0, 3, 'utf-8');
  // UTF-8 인코딩인 경우

  echo mb_substr($sitename, 0, 3, 'euc-kr');
  // EUC-KR 인코딩인 경우
?>

결과는 아래와 같이 나타납니다.
웹이즈

// mb_substr() 함수를 사용해 정확히 한글의 일부만 출력

이처럼 한글인 경우에 mb_substr() 함수를 사용하면 바이트 단위가 아닌 문자열의 길이로 쉽게 자를 수 있습니다.

Previous

[PHP] 배열의 중복값 제거하기, array_unique()

Previous

[PHP] 문자열 길이 가져오기, strlen(), mb_strlen()